Lambda Expressions এবং Higher-order Functions

Mobile App Development - কটলিন (Kotlin) - Functions এবং Lambdas
217

Lambda Expressions এবং Higher-order Functions

কটলিনে Lambda Expressions এবং Higher-order Functions ব্যবহার করে কোড আরও ডাইনামিক এবং ফ্লেক্সিবল করা যায়। এই দুটি কনসেপ্ট আপনাকে কার্যকরভাবে ফাংশন এবং এক্সপ্রেশনগুলো ম্যানিপুলেট করতে দেয়, যা প্রোগ্রামিংকে আরও মডুলার এবং রিডেবল করে। নিচে Lambda Expressions এবং Higher-order Functions নিয়ে বিস্তারিত আলোচনা করা হলো:


১. Lambda Expressions

ল্যাম্বডা এক্সপ্রেশন হলো কটলিনে একটি অ্যানোনিমাস ফাংশন, যা কোনো নাম ছাড়াই লেখা হয়। এটি সাধারণত {} এর ভেতরে থাকে এবং ইনপুট প্যারামিটার এবং আউটপুট এক্সপ্রেশন ধারণ করে।

ল্যাম্বডা এক্সপ্রেশনের সাধারণ ফরম্যাট:

val lambdaName: (InputType) -> ReturnType = { parameter(s) -> expression }

উদাহরণ:

val sum: (Int, Int) -> Int = { a, b -> a + b }
println(sum(5, 3)) // আউটপুট: 8

ব্যাখ্যা:

  • sum একটি ল্যাম্বডা এক্সপ্রেশন যা দুটি Int ইনপুট নেয় এবং একটি Int রিটার্ন করে।
  • { a, b -> a + b } হলো ল্যাম্বডা ব্লক যেখানে a এবং b ইনপুট প্যারামিটার এবং a + b আউটপুট এক্সপ্রেশন।

it কীওয়ার্ড:

যদি ল্যাম্বডায় একটি মাত্র প্যারামিটার থাকে, তাহলে আপনি সরাসরি it কীওয়ার্ড ব্যবহার করতে পারেন।

উদাহরণ:

val square: (Int) -> Int = { it * it }
println(square(4)) // আউটপুট: 16

ব্যাখ্যা:

  • এখানে square ল্যাম্বডা এক্সপ্রেশনে it একটি ইনপুট প্যারামিটার হিসেবে কাজ করে এবং এটি ইনপুটের স্কোয়ার রিটার্ন করে।

২. Higher-order Functions

Higher-order Functions হলো এমন ফাংশন, যা একটি ফাংশনকে প্যারামিটার হিসেবে গ্রহণ করতে পারে অথবা একটি ফাংশনকে রিটার্ন করতে পারে। এটি কোডের পুনঃব্যবহারযোগ্যতা এবং ফ্লেক্সিবিলিটি বাড়ায়।

সাধারণ ফরম্যাট:

fun functionName(parameter: (Type) -> ReturnType): ReturnType {
    // ফাংশনের ভিতরের কোড
}

উদাহরণ:

fun operateOnNumbers(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
    return operation(a, b)
}

val result = operateOnNumbers(10, 5) { x, y -> x + y }
println(result) // আউটপুট: 15

ব্যাখ্যা:

  • operateOnNumbers হলো একটি higher-order function, যা দুটি সংখ্যা (a এবং b) এবং একটি অপারেশন (ল্যাম্বডা এক্সপ্রেশন) নেয়।
  • { x, y -> x + y } হলো একটি ল্যাম্বডা এক্সপ্রেশন যা x এবং y এর যোগফল রিটার্ন করে।

Trailing Lambda Syntax

কটলিনে, যদি একটি ফাংশনের শেষ প্যারামিটার একটি ল্যাম্বডা হয়, তবে ল্যাম্বডাটি ফাংশনের বাইরে রেখে লেখা যায়।

উদাহরণ:

val result = operateOnNumbers(10, 5) { x, y -> x * y }
println(result) // আউটপুট: 50

৩. Common Higher-order Functions in Kotlin

কটলিনে অনেক বিল্ট-ইন higher-order function আছে, যেমন: map, filter, forEach ইত্যাদি। এগুলো কালেকশনের উপরে বিভিন্ন লজিক্যাল অপারেশন করতে ব্যবহৃত হয়।

i) map

map ফাংশন একটি কালেকশনের প্রতিটি এলিমেন্টের উপর একটি অপারেশন প্রয়োগ করে এবং নতুন কালেকশন রিটার্ন করে।

উদাহরণ:

val numbers = listOf(1, 2, 3, 4)
val doubled = numbers.map { it * 2 }
println(doubled) // আউটপুট: [2, 4, 6, 8]

ii) filter

filter ফাংশন একটি শর্ত মেনে চলা এলিমেন্টগুলো সিলেক্ট করে নতুন একটি কালেকশন রিটার্ন করে।

উদাহরণ:

val numbers = listOf(1, 2, 3, 4, 5, 6)
val evenNumbers = numbers.filter { it % 2 == 0 }
println(evenNumbers) // আউটপুট: [2, 4, 6]

iii) forEach

forEach ফাংশন একটি কালেকশনের প্রতিটি এলিমেন্টের উপর একটি অপারেশন এক্সিকিউট করে।

উদাহরণ:

val fruits = listOf("Apple", "Banana", "Cherry")
fruits.forEach { println(it) }

ব্যাখ্যা:

  • এখানে forEach ফাংশনটি fruits লিস্টের প্রতিটি এলিমেন্ট প্রিন্ট করে।

উপসংহার

কটলিনে ল্যাম্বডা এক্সপ্রেশন এবং higher-order functions প্রোগ্রামিংকে আরও ডাইনামিক, ফ্লেক্সিবল এবং ফাংশনাল করে তোলে। এগুলো ব্যবহার করে আপনি সহজেই ফাংশনগুলিকে প্যারামিটার হিসেবে পাস করতে পারেন এবং এক্সপ্রেশনগুলোকে আরও ছোট এবং মডুলার রাখতে পারেন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...